Dress form for three-dimensional drawing inside virtual reality environment

ABSTRACT

Systems and methods are described for producing a representation of a display of a three-dimensional virtual reality environment and defining a dress form object within the virtual reality environment. The virtual reality environment is configured to receive interactive commands from at least one input device coupled to a computing device and associated with a user. Fabric movement simulations are generated by animating the dress form object according to configured animation data and displayed in the virtual reality environment. The display being may be generated in response to receiving a movement pattern indicating movement of the dress form object.

CROSS REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Application No.62/052,338, filed Sep. 18, 2014, the entire contents of which areincorporated by reference.

TECHNICAL FIELD

This description generally relates to the field of computer software andmore specifically to the field of drawing inside virtual realitycomputer software.

BACKGROUND

Using conventional computer software can result in difficulties whenattempting to create a drawing while in a virtual reality environment.In addition, conventional Graphical User Interfaces (GUIs) generally donot translate well into a virtual reality environment. Virtual realityenvironments are built in three dimensions, but conventional GUIs aretypically built for two-dimensional screens.

SUMMARY

In one general aspect, a computer-implemented method includes producinga representation of a display of a three-dimensional virtual realityenvironment and defining a dress form object within the virtual realityenvironment. The virtual reality environment is configured to receiveinteractive commands from at least one input device coupled to acomputing device and associated with a user. The method also includesdisplaying, in the display, the dress form object and a plurality oftoolsets in the virtual reality environment. The plurality of toolsetsare configured to generate virtual three-dimensional geometric contenton the dress form object. The method additionally includes receiving aplurality of selections in at least one of the plurality of toolsets,the plurality of selections including at least a hue, a fabric, and abrushstroke pattern. In response to receiving a plurality of movementpatterns from an input feed of the at least one input device the methodcan include generating three-dimensional geometric content according tothe plurality of movement patterns and the selections, and displayingthe geometric content in the display and on the dress form object. Themethod also includes configuring animation data for the geometriccontent on the dress form object, the animation data being adapted tosimulate properties of the fabric to move the geometric content andsimulating fabric movement by animating the dress form object accordingto the configured animation data and displaying the simulation in thevirtual reality environment. The display is generated in response toreceiving an additional movement pattern indicating movement of thedress form object. Other embodiments of this aspect includecorresponding computer systems, apparatus, and computer programsrecorded on one or more computer storage devices, each configured toperform the actions of the methods.

Example implementations may include one or more of the followingfeatures. The three-dimensional geometric content includes lines andshapes representing at least a portion of a fashion garment. In someimplementations, the hue, the fabric, and the brushstroke pattern areused to generate and output the geometric content on the dress formobject.

In some implementations, the three-dimensional drawing plane isconfigured to be a planar drawing guide for receiving drawings. Theplanar drawing guide can be fitted to a plane of the dress form objector a plane near the dress form object. The plane may be rotatable on atleast three axes and adjustable on or around the dress form object.

In some implementations, the properties of the fabric include fabricweight, fabric drape, and fabric shear recovery. Simulating fabricmovement includes obtaining fabric weight information associated with auser-selected fabric and obtaining, from the at least one input device,user movement direction and force associated with the dress form object.Simulating fabric movement also includes moving at least a portion ofthe fabric at a speed based on the fabric weight and the force, themoving being in a first direction in response to determining the dressform object is moving in a second and opposite direction.

In some implementations, the method includes providing a networkinterface for multiple computing devices to participate in the virtualreality environment shared by the multiple computing devices. Providingthe network interface includes enabling multiple users each using one ormore uniquely identified input devices to collaborate in the virtualreality environment with the dress form object to collaboratemodifications to the geometric content.

In some implementations, the method includes generating a set ofselectable dress form objects for use in the virtual realityenvironment. The dress form objects are configurable to measurementsassociated with human anatomy.

In a second general aspect, a system is described that includes athree-dimensional virtual reality drawing environment defining at leastone dress form object within the environment. The environment isconfigured to receive interactive commands from at least one inputdevice coupled to a computing device and associated with a user. Thesystem also includes a movement tracking module configured to detectlocation information pertaining to a plurality of user movementsassociated with the at least one input device used to interface with thevirtual reality environment, simulate fabric movement based on aplurality of fabric properties and in response to the plurality of usermovements.

The system also includes a plurality of three-dimensional tool palettesconfigured to provide, in the virtual reality environment, a pluralityof fabric swatches, a plurality of drawing patterns, and at least onecolor palette menu represented as a three-dimensional cube including atwo dimensional saturation area including a cross section of spacesrepresenting an intensity for a plurality of hues. The intensity definesa degree to which each hue differs from white. The menu also includes aone-dimensional hue area including a plurality of selectable hues thatwhen selected, automatically adjust the two dimensional saturation areato reflect a position of at least one selected hue in thethree-dimensional cube.

Other embodiments of this aspect include corresponding computer systems,apparatus, and computer programs recorded on one or more computerstorage devices, each configured to perform the actions of the methods.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example system for providing athree-dimensional virtual reality environment (e.g., a VR space) inwhich a user can generate three-dimensional drawings on a dress formfigure.

FIG. 2 is a diagram that illustrates a head mounted display (HMD) deviceaccessing VR content with a computing device in the VR space of FIG. 1.

FIGS. 3A-B are examples of various color spaces represented in two andthree dimensions.

FIG. 4 is a perspective view of an example three-dimensional colorpicker.

FIG. 5 is an example screenshot of a three-dimensional color picker.

FIG. 6 is an example screenshot of a dress form object depicted in theVR space of FIG. 1.

FIGS. 7A-7B are example screenshots of generating drawings on a dressform object using a hue, a pattern, and one or more brushstrokesselected by a user.

FIG. 8 is an example screenshot of drawings generated in a VR spaceusing multiple dress form figures.

FIG. 9 is a flow chart diagramming one embodiment of a process toprovide a virtual reality environment with a dress form object in whicha user can generate three-dimensional drawings upon.

FIG. 10 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described herein.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

This disclosure describes a variety of systems and methods forgenerating an environment in which to create a three-dimensional drawinginside a virtual reality environment (i.e., a VR space). A user canaccess the VR space and begin to create artistic content by drawing(e.g., painting) freeform content on system-generated objects. Inparticular, the systems and methods described herein can provide fashionforms or dress forms within the VR space in which to guide the user ingenerating fashion-related drawing content. Fashion-related drawingcontent can include geometric lines and shapes drawn in the VR space toemulate a fashion design sketchbook, for example. In someimplementations, fashion-related drawing content may pertain to clothing(e.g., shirts, trousers, dresses, skirts, capes, vests, etc.) andaccessories (e.g., handbags, jewelry, shoes, scarves, belts, hosiery,hats, gloves, sunglasses, glasses, etc.). The dress forms may beprovided in the VR space as three-dimensional virtual objects that canfunction to spark the imagination of an artist (e.g., fashion designer)and motivate the artist to create images of designs for particularfashion items and clothing. The dress forms can be rotated and/or movedaround in the VR space to provide the user with an immersive designexperience.

The VR space described below can include a number of toolsets (e.g.,tool palettes) that include brushes, fabric swatches, colors (e.g.,hues), patterns, cursors, panels, canvas simulators, shapes, surfaces,texturizers, or other selectable tools and templates used to generatedrawing content on the dress form objects described herein.

The dress form objects described throughout this disclosure can begenerated in three dimensions and can be movable about multiple axes,for example, in response to user movements or requests. The multipleaxes can provide for rotation or tilt about a 3D drawing plane. The 3Ddrawing plane may be configured to be a planar drawing guide fitted tothe dress form in a two dimension (2D) graphic that is rotatable on atleast three axes. The user may use the planar drawing guide to draw inthe plane defined by the guide. If the user wishes to add furtherdimension to drawing content depicted on the dress form object, the usercan tilt or rotate the planar drawing guide to begin drawing new contenton the dress form object, while leaving prior drawing content in tactand visible in the plane or planes used to generate the prior drawingcontent.

In some implementations, the tool palettes can include mechanisms toimport preexisting files containing 2D or 3D objects including, but notlimited to images representing data, art, photographs, models, and/oraugmented reality content. In one non-limiting example, a user mayannotate portions of the VR space by accessing one or more tools toimport images of objects. The tools in the tool palettes may be used toadd content or modify images by drawing, drafting, painting, scribbling,moving, illuminating or shadowing, or otherwise generating andmanipulating portions of the images in the VR space. The initiallyuploaded images and user-modified images can be manipulated around twoor more axes during and after application of any applied modificationsor annotations. In addition, such images can be shared with other usersfor review and/or collaboration in original or modified/annotated form.In some implementations, the VR space can be used by multiple users tocollaborate and to annotate dress form objects in real time.

Particular implementations described in this disclosure may enable auser to draw in three dimensions in the VR space. The user can generatebeginning and ending points, for example, by drawing in the air tocontrol a cursor associated with a controller, sensor, or a motiontrackable device. In one non-limiting example, the user can point anddirect an input device such that portions or objects in the VR space canbe drawn upon (e.g., with brush strokes, other objects, annotations,texturizers, etc.).

The systems described below can track the drawing motions of the user,generate artistic or annotated content based on those motions, andprovide for moving around the content, the x-y plane or y-z plane (orother coordinate system) that the content is being generated in. Forexample, the user can lift the motion tracked device into the VR space(which can show the user her hands via the HMD device). The user canbegin to draw/paint on a selected surface normal (oriented in 3D space).In another example, if the user begins to draw a circle surrounding herbody, the circle will appear from the motion tracked device as the userbegins to draw the circle. The motion tracked device may be shown to theuser as a paintbrush, pen, controller, or other selected tool in the VRspace. Upon completing any portion of her drawing, the user can tilt theplane/surface normal to begin drawing in another vector space (e.g.,another dimension or drawing plane). In one example, the user can add anumber of fabric swatches to a dress form object to generate a skirt onthe dress form object. The user can then move the dress form object ormove around the dress form object to view aspects of the skirt,including, but not limited to, fabric movement, shadows and lightgenerated by the fabric, and the overall drape of the skirt. The usercan also add additional drawings, details, or content to the skirt bytilting/moving the dress form object.

In some implementations, the systems and methods described in thisdisclosure can provide for importing objects into the VR space. Forexample, a user can upload objects into a system hosting a VRapplication. The VR application can provide the objects for display inthe VR space. In one example, users can upload a dress form objectconfigured with particular body measurements. Such measurements can beused to represent the user as a realistic dress form object withaccurate figure measurements.

In general, the display in the VR space can be viewed by a useraccessing an HMD device. Imported objects can be used to provide avisual reference for a user beginning to draw in three-dimensions withinthe VR space. The objects can be traced, or in some implementations, canbe used as a guide in which the user can judge distances and shapes forrecreating a drawing or other notation for the object. In someimplementations, the user can draw on the imported object to annotateportions of the object. In some implementations, the user can modify theobject by shrinking, growing, elongating, moving, turning, tilting, orotherwise manipulating the object and properties associated with object.In some implementations, the imported objects may be 2D or 3D and caninclude 3D models, scans, mesh models, depth collages, etc. Importedimages can include any displayable file type including, but not limitedto a CAD file, a jpeg file, a png, a bitmap file, or other file type. Insome implementations, the user can export images generated, modified, orotherwise changed within the VR space.

In some implementations, the user/artist can utilize the systems andmethods described in this disclosure as a sketchpad in which to drawfashion-related drawings using selectable fabrics, color palettes,patterns, and brushes/drawing tools. The generated drawings can beanimated, shared, printed, modified, and otherwise digitally accessed ata later time.

Generating an environment in which a user can create three-dimensionaldrawings can include methods for controlling three-dimensional objectsand content while inside a VR space, color representation and selectionwhile inside the VR space, generating graphical user interfaces,sequencing frames for animation, augmenting existing three-dimensionalvirtual objects, representing a user's body while in a VR space, andcollaborating amongst users and spectating while inside a VR space.

In a non-limiting example, a user can view sample sketches, drawcontent/sketches, and import or export sketches from or to an animated.gif. Example controls may include using a keyboard, a mouse, a 3Dcontroller, or any combination thereof, to move a pointer. The pointermay represent an area under a sketch tool depicted in the VR space. Forexample, the pointer may represent an area in which a sketch is beinggenerated. Example mouse motions can include using a left mouse click todraw, using a middle mouse click to pan along a VR space x-y plane,using a right mouse click to pan along world z-axis, and using a doubleclick middle mouse button to reset the pointer to the center of asketching surface.

Example keyboard keys that can control content in the VR space includeholding the control key to rotate the sketching surface, holding thecontrol key and left mouse button to rotate the sketching surface alonga roll axis, holding the shift key to lock the sketching surface to acamera, using the caps lock key to toggle grid locked mode on thesketching surface, holding the tab key to adjust a brush size, pressinga spacebar to reset the sketching surface to the center of scene, doubletapping the control key to reset the sketching surface orientation,selecting the (z) key to undo a stroke or action, pressing the (x) keyto redo a stroke or action. Such controls can also be configured totranslate a surface or object in the VR space while the particularsurface or object is locked.

In addition, the systems and methods described herein can be configuredto detect and react to movements such as head tilt behavior and/or eyegaze behavior associated with a user and an HMD device being worn by theuser. The systems and methods can be used to detect and reactaccordingly to particular tool palettes and dress forms generated fordrawing geometric content in 3D space.

FIG. 1 is a block diagram of an example system 100 for providing athree-dimensional virtual reality environment (e.g., a VR space) inwhich a user can generate three-dimensional drawings on a dress formfigure.

In general, the system 100 may provide the 3D VR space, drawingtools/palettes, objects (e.g., dress form objects) and VR content for auser to access, view, and interact with using the methods, components,and techniques described herein. In particular, system 100 can providethe user with options for accessing the images, content, virtualobjects, and VR controls using eye gaze, hand gestures, head movements,and/or other user-based movements within the VR space. For example, auser can generate 3D drawings in portions of the VR space and interactwith such drawings using 2D and 3D input devices, and tools configuredto generate artistic drawings or annotations on drawings or other VRobjects.

As shown in FIG. 1, the example system 100 includes a plurality ofcomputing devices that can exchange data over a network 101. The devicesmay represent clients or servers and can communicate via network 101, orother network. The client devices may include a mobile device, anelectronic tablet, a laptop, a camera, a game controller, VR glasses orHMD device, or other such electronic device that may be used to accessVR content.

The example system 100 includes a mobile device 102, a game controller103, a laptop computing device 104, head mounted display (HMD) device106, and VR drawing system 108. Devices 102, 103, 104, and 106 mayrepresent client devices. Mobile device 102, game controller 103, laptop104, and HMD device 106 can include one or more processors and one ormore memory devices. The devices 102-106 can execute a client operatingsystem and one or more client applications that can access, control,and/or display VR content on a display device included in eachrespective device. The VR drawing system 108 may represent a serverdevice. In general, VR drawing system 108 may include any number ofrepositories storing images, objects, content and/or virtual realitysoftware modules that can generate, modify, or execute display ofvirtual reality scenes and content.

The HMD device 106 may represent a virtual reality headset, glasses,eyepiece, or other wearable device capable of displaying virtual realitycontent. In operation, the HMD device 106 can execute a VR application110, which can playback received and/or processed images to a user. Insome implementations, the VR application 110 can be hosted by orinterfaced with one or more of the devices 102, 103 104, 106, or 108,shown in FIG. 1.

In some implementations, the mobile device 102 can be placed and/orlocated within the HMD device 106. The mobile device 102 can include adisplay device that can be used as the screen for the HMD device 106.The mobile device 102 can include hardware and/or software for executingthe VR application 110.

Additional devices are possible and such devices may be configured to besubstituted for one another. In some implementations, the devices 102,103, 104, 106, and 108 can be laptop or desktop computers, smartphones,personal digital assistants, portable media players, tablet computers,gaming devices, or other appropriate computing devices that cancommunicate, using the network 101, with other computing devices orcomputer systems.

In the example system 100, the VR drawing system 108 can include a VRapplication 110. The VR application 110 can be configured to execute onor interface to any or all of devices 102, 103, 104, 106, and 108. TheHMD device 106 can be connected to device 102, device 103, or device 104to access VR content on VR drawing system 108, for example. Devices102-104 can be connected (wired or wirelessly) to HMD device 106, whichcan provide VR content for display and interactive drawing.

In the event that the HMD device is wirelessly connected to devices102-104, the connection may include use of one or more of the high-speedwireless communication protocols described herein. In the event that theHMD device 106 is wired to devices 102-104, a wired connection caninclude a cable with an appropriate connector on either end for plugginginto devices 102-104. For example, the cable can include a UniversalSerial Bus (USB) connector on both ends. The USB connectors can be thesame USB type connector or the USB connectors can each be a differenttype of USB connector. The various types of USB connectors can include,but are not limited to, USB A-type connectors, USB B-type connectors,micro-USB A connectors, micro-USB B connectors, micro-USB AB connectors,USB five pin Mini-b connectors, USB four pin Mini-b connectors, USB 3.0A-type connectors, USB 3.0 B-type connectors, USB 3.0 Micro Bconnectors, and USB C-type connectors. Similarly, the wired connectioncan include a cable with an appropriate connector on either end forplugging into the HMD device 106 and devices 102-104. For example, thecable can include a Universal Serial Bus (USB) connector on both ends.The USB connectors can be the same USB type connector or the USBconnectors can each be a different type of USB connector.

In some implementations, one or more content/drawing servers (e.g., VRdrawing system 108) and one or more computer-readable storage devicescan communicate with the computing devices 102 or 104 using network 101to provide VR content and selectable drawing tools to the devices102-106. In some implementations, the network 101 can be a publiccommunications network (e.g., the Internet, cellular data network,dialup modems over a telephone network) or a private communicationsnetwork (e.g., private LAN, leased lines). In some implementations, thecomputing devices 102-108 can communicate with the network 101 using oneor more high-speed wired and/or wireless communications protocols (e.g.,802.11 variations, WiFi, Bluetooth, Transmission ControlProtocol/Internet Protocol (TCP/IP), Ethernet, IEEE 802.3, etc.).

In some implementations, the mobile device 102 can execute the VRapplication 110 and provide content and drawing capabilities to a useraccessing the VR space. In some implementations, the laptop computingdevice 104 can execute the VR application 110 and can provide contentand drawing capabilities to a user accessing the VR space, as shown byexample at graphical user interface 140. The one or more servers and oneor more computer-readable storage devices can communicate with themobile device 102 and/or laptop computing device 104 using the network101 to provide content and drawing capabilities for display in HMDdevice 106.

The VR drawing system 108 includes a movement tracking module 112 thatcan be configured to track user position and motion within the VR spaceas well as tracking drawing content. For example, the movement trackingmodule 112 can employ a geometrical concept to determine user movementof input devices to generate drawing content and brush strokes, inparticular. The geometrical concept is described as a quad. Quads can begenerated and manipulated by a quad generator (not shown). The quadgenerator may be configured to generate triangular geometries fortracking position information within the virtual reality environment.The position information may correspond to an initial input location anda current input location for the three-dimensional input device. Thetriangular geometries may be generated each time the three-dimensionalinput device is moved. The quad generator can generate triangulargeometries that are adapted to be combined to generate drawing contentin the virtual reality environment. The drawing content can beconfigured with a user-selected texture, color, fabric, lighting, and/orshading.

Quads can include at least two triangular geometries (i.e., triangles)that can be used to define positional information for the pointer object(e.g., represented as a brush tip or input mechanism position). Thetriangular geometries include at least two triangles defining a threedimensional starting point for a cursor, represented in the virtualreality environment, and a three-dimensional ending point for thecursor. The positional information can include a beginning pointerlocation and a current pointer location. As a user moves the pointerobject around in 3D space, the system 100 can generate a quad andpositional information corresponding to the quad. The normal of one orboth of the triangles that define the quad can be used to define aforward vector. That is, the normal of the pointer object represents thenormal of a first triangle in the quad. Similarly, the normal of thepointer object in the current position represents the normal of thesecond triangle. A right vector can be obtained by performing the crossproduct of the two normals. Each movement the user makes can be used togenerate quads, and each quad can be stitched or appended together togenerate a smooth brushstroke (e.g., ribbon of color, texture, linedrawing, or other object or artifact representing user movement whengenerating 3D drawing content in the VR space).

The look of a quad can be is defined by the texture, material, color,and shade or luminance. The texture is a property of the material, withthe material being unique per brush and functioning to define thebehavior the texture may have with respect to lighting in a VR space(e.g., scene). The color of a quad is set per vertex, and defined by theuser, as described in detail below. The shade can be applied to the quadusing various inputs from the VR space to modify the look of the quad.Inputs that can affect the shade include color, time, audio input, worldspace position, model space position, and light/luminance values, asdescribed in detail below.

In some implementations, the material as used herein may pertain tofabric and the properties of the fabric (e.g., fabric weight, fabricdrape, and fabric shear recovery). The properties can be used todetermine the look and movement of particular quads. The movementtracking module 112 includes a fabric movement simulator 114 that cansimulate fabric weight, fabric drape, and fabric shear recovery of afabric in order to simulate realistic 3D movement of the representationsof fabric when placed/drawn on the dress form objects described herein.The fabric movement simulator 114 can access a number of fabricdatabases to access fabric data for application to brushstrokes offabric that the user can place on or near the dress form object 118 inthe VR space. In one example, the fabric movement simulator 114 cansimulate fabric movement by obtaining fabric weight informationassociated with a user-selected fabric. The simulator 114 can thenobtain, from the at least one input device associated with a user, (1)user movement direction and (2) force information associated with thedress form objects described herein. The fabric movement simulator 114can then move at least a portion of the fabric at a speed based on thefabric weight and the force. For example, the simulator 114 cancalculate typical forces with respect to user movements, fabricproperties, and dress form object movements (e.g., pertaining to timeand distance) and can select a threshold level of movement for aparticular combination. The simulated movements may be generated anddisplayed in a first direction in response to determining the dress formobject is moving in a second and opposite direction. That is, if theuser twists the dress form object to the right, the draped fabric mayshift or sway left a particular calculable amount.

In general, the weight of a fabric may pertain to the heaviness,thickness, or sheerness of the fabric. In general, the weight can beindicated by an observed number of folds (e.g., wrinkles) that appear ata stress point in the fabric, when placed, on the dress form object, forexample. These folds may be consistently observed when the fabric lieson or off of the dress form. In general, fabric that is heavier inweight may appear to have smaller or fewer wrinkles Fabric that islighter in weight may appear to have many or larger wrinkles. The fabricmovement simulator can simulate the fabric weight upon moving the dressform with particular fabric placed upon it. For example, the X cansimulate heavy fabric by slightly swaying the fabric in an oppositedirection of a moving dress form, for example, in response to a userturning the dress form. Similarly, the X can simulate light fabric byrapidly swaying the fabric in an opposite direction of a moving dressform, for example, in response to a user turning the dress form.

The drape of a fabric may pertain to the way a fabric hangs under itsown weight. The drape of a fabric is depicted when the fabric is placedon a person or dress form, whether in swatches or clothing. Knittedfabrics may be relatively floppy and garments made from them may tend tofollow body or dress form contours. Woven fabrics may be relativelystiff when compared to knitted fabrics so that they are used in tailoredclothing in which the fabric hangs away from the body or dress form andmay tend to disguise contours. Fabric drape is typically related tomechanical properties associated with the fabric, including, but notlimited to bending, shear, formability, fabric weight, and thickness.

The shear recovery of a fabric can be determined by analyzingstress-strain curves for the fabric. If a fabric is deformed at lowlevels of strain, for example, the shear stiffness may be initiallylarge and may decrease with increasing strain. The fabric movementsimulator 114 can simulate particular shear stresses and recovery for afabric in order to depict realistic movement when particularrepresentations of fabrics are drawn on the dress form objects describedherein. For example, the fabric movement simulator 114 may simulate theshear behavior of a particular fabric, according to a weight, a drape,and/or a tension set by the user when attaching the fabric to the dressform objects described herein.

As shown in FIG. 1, the movement tracking module 112 also includes adrawing guide generator 116 configured to generate planar drawingguides, such as planar drawing guide 118 fitted to the dress form object120 in a two dimension (2D) graphic that is rotatable on at least threeaxes. The user can draw in the plane defined by the planar drawing guide118. If the user wishes to add further dimension to drawing contentdepicted on the dress form object 120, the user can tilt or rotate theplanar drawing guide 118 to begin drawing new content on the dress formobject 120, while leaving prior drawing content in tact and visible inthe plane or planes used to generate the prior drawing content.

In some implementations, the planar drawing guide 118 may represent amathematical, 2D, or 3D plane in 3D space. The purpose of the planardrawing guide 118 is to constrain interactions from a user to a subsetof the 3D space. The planar drawing guide 118 can provide a 3D view in away that the user can select at least two dimensions in which to draw.The concept of the planar drawing guide 118 could be generalized to anyshape or size within VR space. For example, instead of a rectangularplane, the shape of a planar drawing guide 118 could be a sphere or cubeor a complex shape including symmetrical or asymmetrical polygons. Theplanar drawing guide 118 may limit the range of interaction with the VRspace for the ease of the user.

In some implementations, the movement tracking module 112 can includecapability for head tracking. For example, the HMD device 106 candetermine directions that a user's head is moving. The user can nod,turn, or tilt her head to indicate which tool to select, which panel toaccess, and/or which other functionality to invoke or revoke.

In some implementations, the movement tracking module 112 may alsoinclude capability for gaze tracking Gaze tracking can interface withone or more sensors, computing systems, cameras, and/or controls todetect gaze/eye movement associated with the user while the user is inthe VR space. The one or more sensors, computing systems, cameras,and/or controls may be housed in HMD device 106, for example. The gazetracking can track or monitor the direction of a user's eye gaze (i.e.,tracking or monitoring where/which direction the user is looking) Ingeneral, gaze tracking may include tracking both the orientation andlocation of one eye or both eyes with respect to a defined coordinatesystem.

In operation of VR drawing system 108, the user is in control of aninput device (e.g., such as a pointer object in a graphical userinterface). When the pointer object is activated, the system 108 canrecord the pointer object position. As the pointer object moves, thesystem 108 can measure the difference from a previously recorded pointerobject position and generate a new quad in response to the pointerobject being moved by the user. The generated new quad may be representtwo triangles, with the forward vector defined by the distance betweenthe points, the pointer forward as the quad normal, and the crossproduct of those two defining the right-hand vector. The width of thequad may be defined by the right-hand vector multiplied by the currentbrush size, which may be controlled by the user.

In some implementations and for certain brush types, the system 108 canstitch the quads together to create a smooth, ribbon effect. Stitchingthe quads together may include matching a leading edge of a previousquad with a trailing edge of the current quad. Midpoint mathematicalcalculations can be used to ensure quad triangles do not fold in onother quad triangles. In addition, if the dot product of the forwardvectors of two sequential quads is greater than an amount relative tothe vector size multiplied by a scalar, the system 108 can trigger abreak of the ribbon, which can begin a new sequence of quads. In someimplementations, smoothing algorithms can be applied to the normals ofsequential quads to generate a consistent look to theribbons/brushstrokes.

In some implementations, the system 108 may not stitch the quadstogether and instead may assign random orientations to a forward vector,which can function to generate a spray paint effect. Such an effect maybe associated with particle brushes that can be selected from a brushtool palette. In one example, instead of generating and stitching quads,the system 108 can generate billboard stripes.

As shown in FIG. 1, the VR drawing system 108 also includes toolpalettes 122 including, but not limited to hues 124, brushes 126, fabricswatches 128, and patterns 130. The VR application 110 can provide anumber of tool palettes 122 within the VR space. Tool palettes 122 maybe represented as 2D or 3D interactive menus in the VR space. In oneexample, tool palettes 122 are 3D objects that can include a number ofuser-selectable controls or content. The tool palettes 122 may beaffixed to content in the VR space or may appear floating in the VRspace and at the ready to receive user selections or simply providevisual guidance. In some implementations, the panels may light up toindicate available tools, drawing planes, pointer locations, or otherindicators that can trigger head or eye movement from a user.

The tool palettes 122 may include a color panel including hues 124,which may represent a three-dimensional tool palette configured toprovide, in a VR space, at least one color palette menu represented as athree-dimensional cube in three-dimensional space. The cube may includea two dimensional saturation area including a cross section of spacesrepresenting intensity for number of different hues 124. The intensitymay define a degree to which each hue differs from white. The intensitymay be depicted numerically, graphically, textually, or both. The cubealso includes one-dimensional hue area including selectable hues. Uponselection of one of the hues, the color panel may automatically adjustthe two dimensional saturation area to reflect a position of at leastone of the selected hues in the three-dimensional cube.

The tool palettes 122 include brushes 126. Brushes 126 can apply to anytool used to generate drawings, objects, and/or content in the VRapplication 110. A brush may be defined by the material and shaderassociated with the brush. The material can optionally contain atexturizing aspect that applies particular textured representations ofthe material. The brush color is generally selected by a user.

The following tables describe a number of brush panel and drawing paneloptions and effects that can be accessed in the VR space using the pointto select a brush or adjust a brush size.

TABLE 1 Brush Panel Options Brush Panel Effect Ink Textured lines thatalways face the camera Streaky Ink Textured lines that always face thecamera Pencil Thin lines that always face the camera Additive InkTextured lines that always face the camera, using additive colorproperties Flat Brush Flat, oriented paint quads Coarse Brush Textured,oriented paint quads Splatter Brush Textured, oriented paint quadsSquare Brush Flat, oriented paint quads Star Brush Creates starparticles Smoke Brush Creates smoke particles Shrapnel Brush Createssharp, angular particles Light Brush Flat lines that always face thecamera and emit light

TABLE 2 Drawing Options Panel Drawing Options Panel Response New SketchClears scene Sample Sketch 1 Test scenes to show example sketches SampleSketch 2 Sample Sketch 3 Scene Lights Use two directional lights forshadow casting Ambient Lights Use only flag, white ambient light NoLights Disables lighting to highlight Light Brush strokes UnlockedRotation Free rotation with Ctrl key Yaw Only Rotation Rotation islocked to the Yaw axis on the Sketching Surface Pitch Only RotationRotation is locked to the Pitch axis on the Sketching Surface Roll OnlyRotation Rotation is locked to the Roll axis on the Sketching SurfaceUndo Undoes last brush mark Redo Redoes last undone brush mark. ToggleGrid Lock Toggles Grid Locked mode on Sketching Surface Auto-OrientAutomatically adjusts the orientation of the sketching surface after arotation to ensure ‘up’ on the mouse is ‘up’ on the Sketching SurfaceAuto-Gif Exports an animated .gif file of the current scene. The focalpoint of the exported .gif is the current center of the SketchingSurface. Animated .gif files are saved in the Gifs folder

In one example, instead of free-form drawing, a user can select aconstraining tool to paint or draw a particular shape. One such exampleincludes a straight edge tool that can be selected to provide a straightline from a beginning to ending point selected by the user and in theselected brush stroke. Another example includes a mirror brush that canbe selected to free form mirror a drawing that the user is activelydrawing in the VR environment. The mirror brush can mirror such adrawing left to right, top to bottom, or any other 2D or 3D mirroringangle. In addition, the mirror brush can replicate to any number ofaxes. For example, the mirror brush can be set to mirror across axessuch that a 3D mirrored drawing can be replicated across all three axesin 3D. Functionally, the system 100 may be receiving input from a userat a pointer and can mirror the pointer movements across several planesof space in the VR space. The mirroring may be a mathematical reflectionacross the planes. The mirroring can occur simultaneously to the usergenerating the drawing.

The tool palettes 122 may include fabric swatches 128 (e.g., fabricpainters that can mimic fabric swatches in the VR space). The fabricswatches 128 may include textile options including but not limited tosilk, corduroy, cotton, rayon, polyester, wool, leather, fleece, etc. Auser can select one or more fabric swatch 128 and draw on a dress formretrieved from dress forms 132, for example. The drawing may be appliedin brushstrokes that begin to take on similar visual properties of theselected fabric type. For example, if the user selects a desired fabricfrom an array of fabric swatches 128 (e.g., images representative offabric swatches in the VR space), then the drawing can be generated inline or shape form, and can be tiled, or stretched as the user wishes.In some implementations, the user can define fabric swatches bycombining one or more fabric swatches or by applying visual effects toparticular fabric swatches. For example, the user can add anillumination to a fabric swatch.

The tool palettes 122 may include patterns 130. The patterns 130 maypertain to garment components, accessory components, dress formcomponents, or full garments or accessories. Users can access patterns130 to select and insert a virtual image of such patterns into the VRspace. In some implementations, the patterns can provide guidance to theuser to allow the user to draw or sketch on the dress form object 120,for example.

FIG. 2 is a diagram that illustrates an HMD device 106 (or VR device)accessing VR content with a mobile device 102, for example. In theexample shown in FIG. 2, a user 202 may be accessing VR drawing system108 by interfacing with content in system 108 (with controller 103). Theuser 202 may be accessing a color palette 204 and may be drawing contenton a dress form object 206. The image with the color palette 204 and thedress form object 206 is shown as a dotted line figure because thedepicted content is provided within the VR space that the user 202 isviewing in HMD 106.

To begin accessing VR drawing system 108 and view panel 206, the user202 can put on the HMD device 106 by placing the device 106 over theeyes of the user 202. In some implementations, referring to FIG. 1, theHMD device 106 can interface with/connect to mobile device 102 and/orcontroller 103, for example, using one or more high-speed wired and/orwireless communications protocols (e.g., WiFi, Bluetooth, Bluetooth LE,USB, etc.) or by using an HEMI interface. The connection can provide thecontent to the HMD device 106 for display to the user on a screenincluded in the device 106.

One or more sensors can be included on controller 103 and can betriggered, by users accessing device 103 and HMD device 106, to provideinput to the VR space. The sensors can include, but are not limited to,a touchscreen, accelerometers, gyroscopes, pressure sensors, biometricsensors, temperature sensors, humidity sensors, and ambient lightsensors. The controller 103 can use the sensors to determine an absoluteposition and/or a detected rotation of the controller 103 in the VRspace that can then be used as input to the VR space. For example, thecontroller 103 may be incorporated into the VR space as a mobile phone,a paintbrush, a pencil or pen, a drawing tool, a controller, a remote,or other object etc. Positioning of the controller 103 by the user whenincorporated into the VR space can allow the user to position the mobilephone, paintbrush, pencil or pen, drawing tool, controller, remote, orother object in the VR space.

In some implementations, one or more input devices can be used to accesscontent and provide input to the VR space. The input devices caninclude, but are not limited to, a touchscreen, a keyboard, one or morebuttons, a trackpad, a touchpad, a pointing device, a mouse, atrackball, a joystick, a camera, and a microphone. A user interactingwith an input device can cause a particular action to occur in the VRspace.

Referring now to FIGS. 3A-3B, three-dimensional color volumes are shown.In general, color is a three dimensional quantity that is traditionallyrepresented on a two dimensional surface. The following descriptionincludes a method of representing, and choosing, a color in a 3D VRspace by representing that color in 3D.

Color can be a complex concept, and may commonly be reduced to a 3Dcolor space for use in computer graphics. By defining a color space,colors can be identified numerically by particular coordinates. Invirtual reality, true 3D color objects can be generated and manipulated.

FIG. 3A depicts color in two dimensions for Hue, Saturation, Value (HSV)color spaces 302 a, Red, Green, Blue (RGB) color spaces 304 a, and Labcolor space 306 a. FIG. 3B depicts color in three dimensions for HSV 302b, RGB 304 b, and Lab 306 b. By rendering these color spaces into the VRspace as true 3D objects, the user can comprehend and visualize allaccessible colors.

In order to render the color space without obscuring colors inside thevolume, users can select a two-dimensional slice by positioning a crosssection inside the volume. Colors in front of the slice should not berepresented, as they will obscure colors on the cross section. Colorsbehind the cross section can be rendered with partial, or full,transparency. Any and all colors can be selected to generate drawingcontent on or near the dress form objects described herein.

Referring now to FIG. 4, it is shown that one way of positioning thecross section is to define its position as one of the color space axis402, 404 a, and 404 b. Manipulating the value of one or more of theseaxes (402, 404 a, 404 b) changes the position in 3D space of the crosssection from cross section 406 a to cross section 406 b. The colors onthe cross section 406 b updates accordingly. A single 2D position on thecross section 406 a, combined with the value of that third axis 404 a or404 b, fully describes the coordinate of a desired color. The crosssection 406 b can also be positioned in other ways described above withrespect to object control. For example, motion controller or headposition can be used to manipulate the cross section.

Referring now to FIG. 5, an HSV color picker is shown. It should benoted viewing the color in three-dimensions provides a more accurateview into what colors are available for selection, as the narrowing atthe bottom of the cone (as all colors converge on black) is visualized.As shown, a screenshot 500 of a prototype application of athree-dimensional color picker with a color space 502.

In general, the concept of a three dimensional color space, and colorpicker, can be expanded to contain information more complex than justthe three-dimensional color spaces. In this example, colors that are inuse in the VR drawing system 108 in the VR space are highlightedallowing users to visualize their color palette in three dimensions.Hues 504 are shown here on the right side of color space 502. The huesrange from lightness/bright or lightness and darkness, which can bedepicted as a color, shade, or numerical value. Sliding a hue slider(not shown) up and down can cause the color palette 506 a to physicallycause movement (i.e., virtual movement) in the VR space, as shown bygrowing color palette 506 b.

Color palettes can be depicted in 3D and as a 3D colorbox (e.g., colorvolume). The palettes may appear 3D to the user and be generated anddepicted in the VR space as a cross-sectioned space representing a colorselector. In particular, the cross-sectioned space may be represented asa cross-section of a cube that translates according to a user-selectablehue and then the texture on the cross-section updates color according tothe position that it is cross-sectioning the cube. A user can select ahue to begin painting a drawing and can reselect additional hues tochange colors and begin drawing in the reselected hues, accordingly.

In some implementations, hues may be textures, rather than colors. Forexample, the quads described above can be generated with a number oftextures. Upon generating such quads, a 3D geometry can be applied tothe quads as the drawings are generated by a user. Depending on the typeof brush the user selects, brightness (e.g., ultraviolet numericalvalues) can also be applied to the quads. This can allow for drawinglight in the 3D VR space. In some implementations, the system 100 can beused to stretch ultraviolet hues from 0 (darkness) to 1 (sunlightbrightness) across an entire brushstroke. In some implementations, thesystem 100 can repeat a swatch of UV from 0 to 1 by resetting the hue togenerate a repeating light swatch of quads.

Color may be represented on a cube in triangular form. For example, abottom left corner of a portion of a cube may be a triangle in which onevortex (triangle tip) is colored one hue, while the remaining portionsof the triangle fade to additional hues. The vortex color of thetriangles in each quad are shown as a hue/color that the user hasselected. In one example, if the user selects a white texture and a bluecolor, then the vortex may be tinted blue so that a brush stroke paintedwith such a hue-texture combination can be shown as blue.

In addition to the hue selection, texture selection, brush selection,the system 100 can also allow shader selections which can definereflection values. These reflection values may simulate lighting orshading. The shader value can affect how the texture and hue arerepresented in the VR space. Use cases for virtual reality colorselection for clothes, shoes, makeup, interior design, architecture,product, online product purchasing, 3D printing material selection, andpaint chips.

FIG. 6 is an example screenshot 600 of a dress form object 602 adepicted in the VR space of FIG. 1. The dress form object 602 a shownhere includes a blank canvas that the user can draw upon. A planardrawing guide 604 a is shown to guide the user to draw or place contenton or near the dress form object 602 a in a first plane. Although, notdepicted, the planar drawing guide 604 a can be tilted on three axes andwhen tilted, the dress form object 602 a may be tilted with the guide.This can enable the user to draw in additional dimensions to add depthto the drawing, for example.

As shown at dress form object 602 b, a planar drawing guide 604 b mayhave been used by a user, shown here in the VR space as a hand 606painting in a cape 608. The user may have selected paintbrush 610 in atool palette 612 to do so. In addition, the user has selected a lacefabric swatch 614 and has begun to paint/draw the desired fabric on thecape 608.

Referring now to the object control with two-dimensional input featurein more detail, in FIG. 3, there is shown an object 302 that is viewablein a VR space 304. FIG. 4 shows the conventional computer keyboard 402and mouse 404 input mechanisms.

To access toolsets and input drawings, the user may use keys on akeyboard and/or a mouse to cause a visible change on content drawn inand around the dress forms 602 a or 602 b in the VR space. In operation,using the keyboard and the mouse to draft drawing content can allowmovement in three dimensions. Namely, the keyboard represents a1-dimensional input while the mouse represents a 2-dimensional input.Being that the VR space is 3D, combining the keyboard and mouse canallow for movement in all three dimensions. For example, using thekeyboard and mouse, a 2-dimensional drawing/cutting plane can beaccessed in the 3D VR space and when a user moves the mouse around, thepointer of the mouse (and a pointer or beginning point for creatingdrawings in the VR space) can move around on that plane. A drawing canbe generated by clicking and dragging the mouse and additional movementsand the planar drawing guides (e.g., 604 a, 604 b) can be accessed byholding down certain keys on the keyboard. In particular, theorientation and position of a particular plane can be manipulated usingkeystrokes and mouse movement and input.

In a non-limiting example, a user can begin to draw a portion of cape608 and can rotate (e.g., tilt) the planar drawing guide 604 b and thenbegin to draw or paint additional content, which can appear in the VRspace as if the user is generating/drawing/painting two sides/angles ofthe dress form object 602 b. In some implementations, if the user holdsa shift key on the keyboard, the planar drawing guide 604 b may belocked to the user's head position. In particular, if the user holds theshift key and leans back, the system 100 can bring the planar drawingguide 604 b. If the user holds the shift key on the keyboard and turnsher head to the left, the planar drawing guide 604 b can be adapted torotate leftward.

At any point during or after completion of drawing, the system 100 canapply animation to any or all of the drawing. For example, the system100 may configure animations for and then display the lace fabric 614 ofthe cape 608 moving. The movement may occur in response to the usermoving around the object 602 b, or in response to the user twisting,moving, turning, or tilting the dress form object 602 b.

The user can generate drawings on the dress form objects 602 a and 602 busing tools, for example, by selecting paintbrush 610. The user canadditionally select other items from one or more tool palettes housed inpanels 612, including, but not limited to hues 124, fabric swatches 128(e.g., lace fabric 614), patterns 130, and/or dress forms 132.

Referring now to FIGS. 7A and 7B, a hue, a pattern, and one or morebrushstrokes have been selected by a user. Here, the user (representedby drawing hand 702) is painting a dress 704 a on dress form object 706.In this example, the user may have selected several different brushesand hues to generate an initial drawing, shown at least by lines 705.The user may have chosen the brushes and hues from a color tool palette,708. The color tool palette 708 may represent a portion of a number ofaccessible three-dimensional tool palettes configured to provide, in thevirtual reality environment, a number of selectable fabric swatches, anumber of drawing patterns, and a number of hue/color palettes, and/orobjects. In this example, the color tool palette 708 may include a menuof colors and/or drawing patterns represented as a three-dimensionalcube including a two dimensional saturation area 710, a cross section ofspaces 712, representing an intensity for a plurality of hues. Theintensity may define a degree to which each hue differs from white. Thecolor tool palette 708 may also include a one-dimensional hue areaincluding a plurality of selectable hues that when selected,automatically adjust the two dimensional saturation area to reflect aposition of at least one selected hue in the three-dimensional cube. Thedrawing patterns may include fashion garment templates for use in thevirtual reality drawing environment.

In this example, the user has selected a lace fabric swatch 714, whichmay or may not be applied with paintbrush 702. For example, the user mayhave already used the lace fabric swatch (or may use it again in thenear future), and as such has locked the swatch to her drawing area inthe VR space. This locking can be performed to capture a clipboard ofused brushes, hues, or fabrics, for reference or for reselection whengenerating additional drawing content.

Referring to FIG. 7B, a completed drawing is shown at drawing 704 b.Here, the user may have completed her drawing on the dress form object706 and may have directed the system 100 to merge brush strokes withcommon fabric, brush, and/or hue selections. For example, brushstrokes705 (FIG. 7A) are now shown merged into a cohesive fabric 716 in FIG.7B. The cohesive fabric may have been generated by the system 100 inresponse to detecting common aspects between side-by-side brushstrokes.In this example, the user has also drawn a hat 718 for the design. Thehat 718 includes a lace ribbon 720 generated using the lace fabricswatch 714 and brush 702. The hat also includes feathers 722 that theuser may have selected from fabric swatches or alternatively, hand drewon the hat.

FIG. 8 is an example screenshot 800 of drawings generated in a VR spaceusing multiple dress form objects 802, 804, and 806. In this example,the user (represented in VR space as drawing hand 808) is accessing theVR space with an HMD device. The content and panels shown floating inthe drawing space depicts an example of what the user would see whengenerating content on multiple dress form figures within the VR space.The user can select any number of dress form figures and can beginaccessorizing the figures with drawings of accessories, fabric swatches,previously generated drawings, colors, etc.

A tool palette 810 is shown for the user to select hues, for example.Additional fabric swatches are shown at 812, 814, and 816. The fabricswatches may represent user-selected swatches that the user wishes todisplay with the drawings in screenshot 800. In some implementations,the fabric swatches 812, 814, and 816 may simply provide alternativecolors to the colors depicted on the dress form objects 802, 804, or806.

As shown at dress form object 802, the user 808 is drawing a skirt 820with ruffles 822. The skirt may be in a flowing fabric that, whenanimated by system 100 (e.g., fabric movement simulator 114), cansimulate actual user wear of the clothing article. The selected fabricincludes properties (e.g., shear, drape, and weight properties) that thesystem 100 can simulate during or after the design process.

As shown at dress form object 804, the user 808 has drawn a tennis shirt824 and skirt 826. The shirt 824 utilized fabric swatch 816. The user808 also drew in a necklace 828. Similarly, the user stylized dress formobject 806 with trousers 830. The trousers 830 include flowing lines,hand drawn in the VR space with a drawing tool. The trousers 830 includeswatch 816 as a possible fabric. Here, the user also generated a set oftights 818 and an overcoat cape 819 as an alternative outerwear in herdesign. The tights 818 and cape 819 may have been generated in freespace or may have been generated on one of the dress form objects andsubsequently moved aside in the VR space to make room for anotherdrawing, for example. Although portions of the content depicted in FIG.8 is shown in a flat 2D plane, the content is indeed 3D. That is, thesystem 100 can receive two-dimensional line drawings from a user in 3Dspace and convert the line drawings to 3D. In some implementations, thesystem 100 can allow the user to create additional dimension to their 2Ddesigns, rather than generate 3D content automatically.

In general, graphical user interfaces (GUIs), such as the screenshotdepicted in FIG. 8, are provided in the VR space with a number ofinteractive panels, tools, and menus. The user can use a two orthree-dimensional input device to generate content in GUI of the VRspace. The panels, tools, and menus can be activated and deactivated.The drawing planes for any and all of the dress form objects 802-806 canbe tilted to draw additional content. Tilting one dress form object maynot affect the look or interaction with another dress form object. Thisis because each VR space can be divided into a number of virtual areas.

In addition to interfacing with and generating drawings in the VR space,a user may wish to share a drawing session or completed drawings anddress form designs with other users via networking. The system 100 canenable positioning of a sharing user in the 3D VR space relative toanother user who wishes to view the sharing user's designs. If thesharing user wishes to speak along with draw, the system 100 can provideaudio sounds from a portion of the VR space that the sharing user isspeaking.

FIG. 9 is a flow chart diagramming one embodiment of a process toprovide a virtual reality environment with a dress form object in whicha user can generate three-dimensional drawings upon.

At block 902, the process 900 can include producing a representation ofa display of a three-dimensional virtual reality environment anddefining a dress form object within the virtual reality environment. Thevirtual reality environment may be configured to receive interactivecommands from at least one input device coupled to a computing deviceand associated with a user.

At block 904, the process 900 can include displaying, in the display,the dress form object and a number of toolsets in the virtual realityenvironment. The toolsets may be configured to generate virtualthree-dimensional geometric content on the dress form object. In someimplementations, the three-dimensional geometric content includes linesand shapes representing at least a portion of a fashion garment. Forexample, a single line drawn by a user can be generated a 3D line,shape, or form in the VR space.

At block 906, the process 900 can include receiving a number ofselections in at least one of the toolsets. The selections may pertainto user selections and can include one or more of a hue, a fabric, and abrushstroke pattern. In some implementations, the hue, the fabric, andthe brushstroke pattern may be used to generate and output the geometriccontent on the dress form object.

At block 908, the process 900 can include generating three-dimensionalgeometric content according to the number of movement patterns and theselections. The content may be generated in response to receiving aplurality of movement patterns from an input feed of the at least oneinput device. The geometric content may be displayed in the display andon the dress form object.

At block 910, the process 900 can include configuring animation data forthe geometric content on the dress form object. The animation data maybe adapted to simulate properties of the fabric to move the geometriccontent. The properties of the fabric may include fabric weight, fabricdrape, and fabric shear recovery.

At block 912, the process 900 can include simulating fabric movement byanimating the dress form object according to the configured animationdata and displaying the simulation in the virtual reality environment.The display may be generated in response to receiving an additionalmovement pattern indicating movement of the dress form object.

In some implementations, the process 900 includes using athree-dimensional drawing plane configured to be a planar drawing guidefor receiving drawings. The planar drawing guide may be fitted to aplane of the dress form object, rotatable on at least three axes, andadjustable on the dress form object.

In some implementations, simulating fabric movement also includesobtaining fabric weight information associated with a user-selectedfabric and obtaining, from the at least one input device, user movementdirection and force associated with the dress form object. In addition,simulating fabric movement may also include moving at least a portion ofthe fabric at a speed based on the fabric weight and the force. Themovement can, for example, be in a first direction in response todetermining the dress form object is moving in a second and oppositedirection.

In some implementations, the process 900 also includes providing anetwork interface for multiple computing devices to participate in thevirtual reality environment shared by the multiple computing devices.Providing the network interface may includes enabling multiple userseach using one or more uniquely identified input devices to collaboratein the virtual reality environment with the dress form object tocollaborate modifications to the geometric content.

In some implementations, the process 900 may also include generating aset of selectable dress form objects for use in the virtual realityenvironment. The dress form objects may be configurable to measurementsassociated with human anatomy.

FIG. 10 shows an example of a generic computer device 1000 and a genericmobile computer device 1050, which may be used with the techniquesdescribed here. Computing device 1000 includes a processor 1002, memory1004, a storage device 1006, a high-speed interface 1008 connecting tomemory 1004 and high-speed expansion ports 1010, and a low speedinterface 1012 connecting to low speed bus 1014 and storage device 1006.Each of the components 1002, 1004, 1006, 1008, 1010, and 1012, areinterconnected using various busses, and may be mounted on a commonmotherboard or in other manners as appropriate. The processor 1002 canprocess instructions for execution within the computing device 1000,including instructions stored in the memory 1004 or on the storagedevice 1006 to display graphical information for a GUI on an externalinput/output device, such as display 1016 coupled to high speedinterface 1008. In other implementations, multiple processors and/ormultiple buses may be used, as appropriate, along with multiple memoriesand types of memory. Also, multiple computing devices 1000 may beconnected, with each device providing portions of the necessaryoperations (e.g., as a server bank, a group of blade servers, or amulti-processor system).

The memory 1004 stores information within the computing device 1000. Inone implementation, the memory 1004 is a volatile memory unit or units.In another implementation, the memory 1004 is a non-volatile memory unitor units. The memory 1004 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 1006 is capable of providing mass storage for thecomputing device 1000. In one implementation, the storage device 1006may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 1004, the storage device1006, or memory on processor 1002.

The high speed controller 1008 manages bandwidth-intensive operationsfor the computing device 1000, while the low speed controller 1012manages lower bandwidth-intensive operations. Such allocation offunctions is exemplary only. In one implementation, the high-speedcontroller 1008 is coupled to memory 1004, display 1016 (e.g., through agraphics processor or accelerator), and to high-speed expansion ports1010, which may accept various expansion cards (not shown). In theimplementation, low-speed controller 1012 is coupled to storage device1006 and low-speed expansion port 1014. The low-speed expansion port,which may include various communication ports (e.g., USB, Bluetooth,Ethernet, wireless Ethernet) may be coupled to one or more input/outputdevices, such as a keyboard, a pointing device, a scanner, or anetworking device such as a switch or router, e.g., through a networkadapter.

The computing device 1000 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 1020, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 1024. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 1022. Alternatively, components from computing device 1000 maybe combined with other components in a mobile device (not shown), suchas device 1050. Each of such devices may contain one or more ofcomputing device 1000, 1050, and an entire system may be made up ofmultiple computing devices 1000, 1050 communicating with each other.

Computing device 1050 includes a processor 1052, memory 1064, aninput/output device such as a display 1054, a communication interface1066, and a transceiver 1068, among other components. The device 1050may also be provided with a storage device, such as a microdrive orother device, to provide additional storage. Each of the components1050, 1052, 1064, 1054, 1066, and 1068, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 1052 can execute instructions within the computing device1050, including instructions stored in the memory 1064. The processormay be implemented as a chipset of chips that include separate andmultiple analog and digital processors. The processor may provide, forexample, for coordination of the other components of the device 1050,such as control of user interfaces, applications run by device 1050, andwireless communication by device 1050.

Processor 1052 may communicate with a user through control interface1058 and display interface 1056 coupled to a display 1054. The display1054 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid CrystalDisplay) or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 1056 may compriseappropriate circuitry for driving the display 1054 to present graphicaland other information to a user. The control interface 1058 may receivecommands from a user and convert them for submission to the processor1052. In addition, an external interface 1062 may be provide incommunication with processor 1052, so as to enable near areacommunication of device 1050 with other devices. External interface 1062may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 1064 stores information within the computing device 1050. Thememory 1064 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 1074 may also be provided andconnected to device 1050 through expansion interface 1072, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 1074 may provide extra storage spacefor device 1050, or may also store applications or other information fordevice 1050. Specifically, expansion memory 1074 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, expansionmemory 1074 may be provide as a security module for device 1050, and maybe programmed with instructions that permit secure use of device 1050.In addition, secure applications may be provided via the SIMM cards,along with additional information, such as placing identifyinginformation on the SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 1064, expansionmemory 1074, or memory on processor 1052, that may be received, forexample, over transceiver 1068 or external interface 1062.

Device 1050 may communicate wirelessly through communication interface1066, which may include digital signal processing circuitry wherenecessary. Communication interface 1066 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 1068. In addition, short-range communication may occur, suchas using a Bluetooth, Wi-Fi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 1070 mayprovide additional navigation- and location-related wireless data todevice 1050, which may be used as appropriate by applications running ondevice 1050.

Device 1050 may also communicate audibly using audio codec 1060, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codec 1060 may likewise generate audiblesound for a user, such as through a speaker, e.g., in a handset ofdevice 1050. Such sound may include sound from voice telephone calls,may include recorded sound (e.g., voice messages, music files, etc.) andmay also include sound generated by applications operating on device1050.

The computing device 1050 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 1080. It may also be implemented as part of a smartphone 1082, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In some implementations, the computing devices depicted in FIG. 10 caninclude sensors that interface with a virtual reality (VR headset 1090).For example, one or more sensors included on a computing device 1050 orother computing device depicted in FIG. 10, can provide input to VRheadset 1090 or in general, provide input to a VR space. The sensors caninclude, but are not limited to, a touchscreen, accelerometers,gyroscopes, pressure sensors, biometric sensors, temperature sensors,humidity sensors, and ambient light sensors. The computing device 1050can use the sensors to determine an absolute position and/or a detectedrotation of the computing device in the VR space that can then be usedas input to the VR space. For example, the computing device 1050 may beincorporated into the VR space as a virtual object, such as acontroller, a laser pointer, a keyboard, a weapon, etc. Positioning ofthe computing device/virtual object by the user when incorporated intothe VR space can allow the user to position the computing device to viewthe virtual object in certain manners in the VR space. For example, ifthe virtual object represents a laser pointer, the user can manipulatethe computing device as if it were an actual laser pointer. The user canmove the computing device left and right, up and down, in a circle,etc., and use the device in a similar fashion to using a laser pointer.

In some implementations, one or more input devices included on, orconnect to, the computing device 1050 can be used as input to the VRspace. The input devices can include, but are not limited to, atouchscreen, a keyboard, one or more buttons, a trackpad, a touchpad, apointing device, a mouse, a trackball, a joystick, a camera, amicrophone, earphones or buds with input functionality, a gamingcontroller, or other connectable input device. A user interacting withan input device included on the computing device 1050 when the computingdevice is incorporated into the VR space can cause a particular actionto occur in the VR space.

In some implementations, a touchscreen of the computing device 1050 canbe rendered as a touchpad in VR space. A user can interact with thetouchscreen of the computing device 1050. The interactions are rendered,in VR headset 1090 for example, as movements on the rendered touchpad inthe VR space. The rendered movements can control objects in the VRspace.

In some implementations, one or more output devices included on thecomputing device 1050 can provide output and/or feedback to a user ofthe VR headset 1090 in the VR space. The output and feedback can bevisual, tactical, or audio. The output and/or feedback can include, butis not limited to, vibrations, turning on and off or blinking and/orflashing of one or more lights or strobes, sounding an alarm, playing achime, playing a song, and playing of an audio file. The output devicescan include, but are not limited to, vibration motors, vibration coils,piezoelectric devices, electrostatic devices, light emitting diodes(LEDs), strobes, and speakers.

In some implementations, the computing device 1050 may appear as anotherobject in a computer-generated, 3D environment. Interactions by the userwith the computing device 1050 (e.g., rotating, shaking, touching atouchscreen, swiping a finger across a touch screen) can be interpretedas interactions with the object in the VR space. In the example of thelaser pointer in a VR space, the computing device 1050 appears as avirtual laser pointer in the computer-generated, 3D environment. As theuser manipulates the computing device 1050, the user in the VR spacesees movement of the laser pointer. The user receives feedback frominteractions with the computing device 1050 in the VR space on thecomputing device 1050 or on the VR headset 1090.

In some implementations, one or more input devices in addition to thecomputing device (e.g., a mouse, a keyboard) can be rendered in acomputer-generated, 3D environment. The rendered input devices (e.g.,the rendered mouse, the rendered keyboard) can be used as rendered inthe VR space to control objects in the VR space.

Computing device 1000 is intended to represent various forms of digitalcomputers, such as laptops, desktops, workstations, personal digitalassistants, servers, blade servers, mainframes, and other appropriatecomputers. Computing device 1050 is intended to represent various formsof mobile devices, such as personal digital assistants, cellulartelephones, smart phones, and other similar computing devices. Thecomponents shown here, their connections and relationships, and theirfunctions, are meant to be exemplary only, and are not meant to limitimplementations of the inventions described and/or claimed in thisdocument.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the specification.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A system comprising: a three-dimensional virtualreality drawing environment executing on at least one processor anddefining, with the at least one processor, at least one dress formobject for display within the virtual reality drawing environment, theenvironment configured to receive interactive commands from at least oneinput device coupled to a computing device; a movement tracking moduleexecuting on the at least one processor to carry out operationsincluding detecting location information pertaining to a plurality ofmovements associated with the at least one input device and simulatingfabric movement based on a plurality of fabric properties and inresponse to the plurality of movements; and a plurality ofthree-dimensional tool palettes configured for use in generating drawingcontent in the virtual reality drawing environment, the tool palettesincluding at least: a plurality of fabric swatches; a plurality ofdrawing patterns; and at least one color palette menu represented as athree-dimensional cube including a two-dimensional saturation areaincluding a plurality of hues and a one-dimensional hue area includingthe plurality of hues that when selected, automatically adjust the twodimensional saturation area to reflect a position of at least oneselected hue in the three-dimensional cube.
 2. The system of claim 1,wherein simulating fabric movement further includes: obtaining fabricweight information associated with a user-selected fabric and obtaining,from the at least one input device, user movement direction and forceassociated with the dress form object; and moving at least a portion ofthe fabric at a speed based on the fabric weight and the force, themoving being in a first direction in response to determining the dressform object is moving in a second and opposite direction.
 3. The systemof claim 1, wherein the plurality of fabric properties include fabricweight, fabric drape, and fabric shear recovery.
 4. The system of claim1, wherein the plurality of drawing patterns include fashion garmenttemplates for use in the virtual reality drawing environment.
 5. Thesystem of claim 1, further comprising: providing a network interface formultiple computing devices to participate in the reality environmentshared by the multiple computing devices, wherein providing the networkinterface includes enabling multiple users each using one or moreuniquely identified input devices to collaborate in the realityenvironment with the dress form object to collaborate modifications tothe drawing content.
 6. The system of claim 1, wherein a selected huefrom the plurality of hues and a brushstroke pattern selected from theat least one toolset are used to generate and output the drawing contenton the dress form object according to tracked locations in the realityenvironment, the tracked locations corresponding to the drawing contentthat is associated with a plurality of movement patterns generated bythe at least one input device.
 7. The system of claim 1, wherein athree-dimensional drawing plane is configured to be a planar drawingguide for receiving drawings on a virtual object, the planar drawingguide being fitted to a plane of the virtual object, rotatable on atleast three axes, and adjustable on the virtual object.
 8. A systemcomprising: a three-dimensional augmented reality drawing environmentexecuting on at least one processor and defining a plurality of virtualobjects within the environment; a movement tracking module executing onthe at least one processor to carry out operations including detectinglocation information associated with a plurality of movements that areassociated with at least one input device; and a plurality ofthree-dimensional tool palettes configured for use in generating drawingcontent, in the augmented reality drawing environment, at least onecolor palette menu represented as a three-dimensional cube including atwo-dimensional saturation area depicting a plurality of selectablehues, the two-dimensional saturation area including a one-dimensionalhue area including the plurality of hues that when selected,automatically adjust the two dimensional saturation area to reflect aposition of at least one selected hue in the three-dimensional cube. 9.The system of claim 8, wherein the movement tracking module simulatesmovement of content drawn in the augmented reality drawing environmentaccording to the plurality of movements associated with the at least oneinput device.
 10. The system of claim 8, wherein the plurality ofthree-dimensional tool palettes further include a plurality of drawingpatterns with templates associated with the virtual object and for usein the augmented reality drawing environment, the virtual objectincluding a dress form object and the plurality of drawing patternsincluding fashion garment templates for use with the dress form objectin the augmented reality drawing environment.
 11. The system of claim 8,further comprising: providing a network interface for multiple computingdevices to participate in the augmented reality environment shared bythe multiple computing devices, wherein providing the network interfaceincludes enabling multiple users each using one or more uniquelyidentified input devices to collaborate, in the augmented realityenvironment, modifications to the drawing content.
 12. The system ofclaim 8, wherein a selected hue from the plurality of hues and abrushstroke pattern selected from the at least one toolset are used togenerate and output the drawing content according to tracked locationsin the augmented reality environment, the tracked locationscorresponding to the drawing content that is associated with a pluralityof movement patterns generated from the at least one input device. 13.The system of claim 8, wherein a three-dimensional drawing plane isconfigured to be a planar drawing guide for receiving drawings on avirtual object, the planar drawing guide being fitted to a plane of thevirtual object, rotatable on at least three axes, and adjustable on thevirtual object.
 14. A computer-implemented method comprising: producinga representation of a three-dimensional augmented reality environmentand defining an object within the augmented reality environment, theaugmented reality environment configured to receive interactive commandsfrom at least one input device coupled to a computing device; triggeringrendering of the object and at least one toolset in the augmentedreality environment; and triggering rendering of three-dimensionalgeometric content on the object responsive to a plurality of detectedmovement patterns performed by the at least one input device and usingat least a portion of the toolset, wherein the at least one toolsetincludes at least one color palette menu represented as athree-dimensional object including a two-dimensional saturation areadepicting a plurality of hues, the two-dimensional saturation areaincluding a one-dimensional hue area including the plurality of huesthat when triggered for selection, automatically adjust the twodimensional saturation area to reflect a position of at least oneselected hue in the three-dimensional object.
 15. Thecomputer-implemented method of claim 14, wherein the three-dimensionalgeometric content includes three-dimensional brushstrokes drawn anddepicted in real time in three-dimensional space around the object torepresent at least a portion of a fashion garment in the augmentedreality environment.
 16. The computer-implemented method of claim 14,wherein a selected hue from the plurality of hues and a brushstrokepattern selected from the at least one toolset are used to generate andoutput the geometric content on the object according to trackedlocations in the augmented reality environment, the tracked locationscorresponding to the geometric content that is associated with theplurality of movement patterns from an input feed of the at least oneinput device.
 17. The computer-implemented method of claim 14, wherein athree-dimensional drawing plane is configured to be a planar drawingguide for receiving drawings, the planar drawing guide being fitted to aplane of the object, rotatable on at least three axes, and adjustable onthe object.
 18. The computer-implemented method of claim 14, wherein thethree-dimensional augmented reality environment is configured tosimulate fabric movement on the object by simulating properties of auser-selected fabric represented as a drawing upon the object, thesimulated fabric movement based on fabric weight, fabric drape, andfabric shear recovery.
 19. The computer-implemented method of claim 18,wherein simulating fabric movement further includes: obtaining fabricweight information associated with the user-selected fabric andobtaining, from the at least one input device, user movement directionand force associated with the object; and moving at least a portion ofthe fabric at a speed based on the fabric weight and the force, themoving being in a first direction in response to determining the objectis moving in a second and opposite direction.
 20. Thecomputer-implemented method of claim 14, further comprising: providing anetwork interface for multiple computing devices to participate in theaugmented reality environment shared by the multiple computing devices,wherein providing the network interface includes enabling multiple userseach using one or more uniquely identified input devices to collaboratein the augmented reality environment with the object to collaboratemodifications to the geometric content.